﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BLL;
using Entities;
using System.Text.RegularExpressions;

namespace QLTB_CTK34
{
	public partial class FrmGuiLoiTB : Form
	{
		public FrmGuiLoiTB()
		{
			InitializeComponent();
            this.MaximizeBox = false;
		}

		private void FrmGuiLoiTB_Load(object sender, EventArgs e)
		{
			txtMaNG.Text = MyAccount.account.MaTK;
            LoadDSLoaiTB();
            AnHienThiChiTietMT();
		}
        void LoadDSLoaiTB()
        {
            var dsloaitb = QLThietBi.GetAll().ToList().Select(x => x.LoaiTB);
            foreach (var item in dsloaitb)
            {
                if (!kiemtratrungloaitb(item))
                {
                    cbbLoaiTB.Items.Add(item.Trim().ToLower());
                }
            }
        }
        bool kiemtratrungloaitb(string LoaiTB)
        {
            foreach (var item in cbbLoaiTB.Items)
            {
                if (item.ToString().Trim().ToLower() == LoaiTB.Trim().ToLower())
                    return true;
            }
            return false;
        }
		private void btnLoiMT_Click(object sender, EventArgs e)
		{
			//FrmThongBaoLoiMayTinh tblmt = new FrmThongBaoLoiMayTinh(tbltb.MaLoiTB);
			//tblmt.ShowDialog();
		}

		private void btnHuy_Click(object sender, EventArgs e)
		{
			Close();
		}
		public ThongBaoLoiThietBi tbltb;
		KQBaoTriTB kqbt;
		private void btnGuiLoiMT_Click(object sender, EventArgs e)
		{
			//tạo 1 thông báo lỗi thiết bị mới
			tbltb = new ThongBaoLoiThietBi();
			tbltb.MaNguoiGui = txtMaNG.Text;
			tbltb.MaTB = cbbMaTB.Text;
			tbltb.LoaiTB = cbbLoaiTB.Text;
			tbltb.NoiDungLoi = rtxtNoiDungLoi.Text;
			tbltb.NgayGui = dateTimePicker1.Value;
			tbltb.GhiChu = txtGhiChu.Text;

			//tạo 1 kết quả bảo trì mới
			kqbt = new KQBaoTriTB();
			kqbt.MaNguoiGui = txtMaNG.Text;
			kqbt.MaTB = cbbMaTB.Text;
			kqbt.TinhTrangLoi = rtxtNoiDungLoi.Text;
			kqbt.KetQua = "Chưa sửa";
			kqbt.NgayBaoTri = DateTime.Now;

            ActionResult kq = new ActionResult();

            if (cbbLoaiTB.Text.Trim().ToLower() != "máy tính")
            {
                kq = QLTBLoiThietBi.Insert(tbltb, kqbt);
            }
            else
            {
                kq = QLTBLoiThietBi.Insert(tbltb, kqbt, dslmt);
            }
            if (kq.Success)
            {
                kq.Show();
				QLNhatKy.ThemNhatKy("Gửi lỗi thiết bị");
                DialogResult = DialogResult.OK;
            }
            else
            {
                kq.Show();
            }
		}
		List<ThongBaoLoiMayTinh> dslmt = new List<ThongBaoLoiMayTinh>();
		IEnumerable<ThongBaoLoiMayTinh> getall()
		{
			return dslmt;
		}
		public void ThemLoiMayTinh(ThongBaoLoiMayTinh tblmt)
		{
            rtxtNoiDungLoi.AppendText("lỗi "+ tblmt.TenPhanBiLoi +"\n");
			dslmt.Add(tblmt);
			ListViewItem lv = new ListViewItem(tblmt.TenPhanBiLoi);
			lv.SubItems.Add(tblmt.ChiTietLoi);
			lvDSLoiMT.Items.Add(lv);

		}
		private void thêmLỗiMáyTínhToolStripMenuItem_Click(object sender, EventArgs e)
		{
            FrmLoiMT frmltm = new FrmLoiMT();
            if (frmltm.ShowDialog() == DialogResult.OK)
            {
                ThemLoiMayTinh(frmltm.tblmt);
            }
		}
        private void cậpNhậtLỗiMáyTínhToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (lvDSLoiMT.SelectedItems.Count > 0)
            {
                FrmLoiMT frmlmt = new FrmLoiMT();
                ListViewItem lvi = lvDSLoiMT.SelectedItems[0];
                frmlmt.txtTenPhanBiLoi.Text = lvi.SubItems[0].Text;
                frmlmt.rtxtChiTietLoi.Text = lvi.SubItems[1].Text;
                frmlmt.ShowDialog();
                lvi.SubItems[0].Text = frmlmt.txtTenPhanBiLoi.Text;
                lvi.SubItems[1].Text = frmlmt.rtxtChiTietLoi.Text;
            }
        }

		private void LoadLV()
		{
			foreach (var k in dslmt)
			{
				ListViewItem lv = new ListViewItem(k.TenPhanBiLoi);
				lv.SubItems.Add(k.ChiTietLoi);
				lvDSLoiMT.Items.Add(lv);
			}
		}

		private void xóaLỗiMáyTínhToolStripMenuItem_Click(object sender, EventArgs e)
		{
            foreach (ListViewItem item in lvDSLoiMT.SelectedItems)
            {
                dslmt.RemoveAll(x => x.TenPhanBiLoi == item.SubItems[0].Text);
                lvDSLoiMT.Items.Remove(item);
            }
		}
        private void cbbLoaiTB_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cbbLoaiTB.Text.Trim() == "máy tính")
            {
                HienThiChiTietMT();
            }
            else
            {
                AnHienThiChiTietMT();
            }
			if (label4.Enabled = txtGhiChu.Enabled = cbbLoaiTB.Text.ToString().Trim().ToLower() == "máy tính" ? false : true)
			{
				txtGhiChu.ResetText();
			}
			else
				txtGhiChu.Text = "Xem chi tiết";
        }
        void HienThiChiTietMT()
        {
            btnThemLoiMT.Visible = true;
            gbChiTietLMT.Visible = true;

           // btnGuiLoiTB.Location = new Point(159, 438);
           // btnHuy.Location = new Point(437, 440);
            this.Size = new Size(662, 447);
        }
        void AnHienThiChiTietMT()
        {
            btnThemLoiMT.Visible = false;
            gbChiTietLMT.Visible = false;
           // btnGuiLoiTB.Location = new Point(159, 240);
           // btnHuy.Location = new Point(437, 240);
            this.Size = new Size(662, 260);
        }
        private void btnLoadDSTB_Click(object sender, EventArgs e)
        {
            FrmQuanLiThietBi frtbsua = new FrmQuanLiThietBi(cbbLoaiTB.Text);
            frtbsua.ChọnToolStripMenuItem.Visible = true;
            if (frtbsua.ShowDialog() == DialogResult.OK)
            {
                cbbMaTB.Text = frtbsua.ThietBiChon.MaTB.Trim().ToLower();
                cbbLoaiTB.Text = frtbsua.ThietBiChon.LoaiTB.Trim().ToLower();
            }
        }
        /// <summary>
        /// cho hiển thị lỗi thiết bị lên form này,nếu thiết bị chưa bị lỗi,
        /// cho hiển thị lên form cập nhật thiết bị,nếu thiết bị đã bị lỗi rồi
        /// </summary>
        void LoadLoiTB(string matb)
        {
           var ltb=QLTBLoiThietBi.FindByMaTB(matb);
           if (ltb != null)
            {
                FrmCapNhatLTB frmcnltb = new FrmCapNhatLTB(ltb.MaLoiTB);
                frmcnltb.ShowDialog();
                cbbMaTB.Text = "";
            }
           else
           {
               ThietBi tb = QLThietBi.FindByID(matb);
               if (tb!=null)
               {
                   cbbMaTB.Text = tb.MaTB.Trim().ToLower();
                   cbbLoaiTB.Text = tb.LoaiTB.Trim().ToLower();
               }
           }
        }
        bool Datasource_Matb_changed = false;
        private void cbbMaTB_DropDown(object sender, EventArgs e)
        {
            Datasource_Matb_changed = true;
            cbbMaTB.DataSource = QLThietBi.FindByCondition(x => Regex.IsMatch(x.LoaiTB.Trim().ToLower(), @cbbLoaiTB.Text));
            Datasource_Matb_changed = false;
            cbbMaTB.Text = "";
        }

        private void cbbMaTB_SelectedValueChanged_1(object sender, EventArgs e)
        {
            if (!Datasource_Matb_changed)
                LoadLoiTB(cbbMaTB.Text);
        }
      
        private void lvDSLoiMT_DoubleClick(object sender, EventArgs e)
        {
            cậpNhậtLỗiMáyTínhToolStripMenuItem.PerformClick();
        }

        private void lvDSLoiMT_Click(object sender, EventArgs e)
        {
            xóaLỗiMáyTínhToolStripMenuItem.Visible = lvDSLoiMT.SelectedItems.Count > 0;
            cậpNhậtLỗiMáyTínhToolStripMenuItem.Visible = lvDSLoiMT.SelectedItems.Count > 0;
        }
       
	}
}
